package com.example.sandbox.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 支付方式 巴西网关支付
 *
 * @Author Lierbao
 * @Date 2024/5/14 12:10
 */
@Data
public class GbpsdPayOrderRQ {


    // 区分58-uu订单用的, 沙箱专用
    private String orderId;

    /**
     * 商户号
     **/
    @NotBlank(message = "Merchant number cannot be empty")
    private String mchNo;

    /**
     * 商户应用ID
     **/
    @NotBlank(message = "Merchant application ID cannot be empty")
    private String appId;

    /**
     * 商户订单号
     **/
    @NotBlank(message = "Merchant order number cannot be empty")
    private String mchOrderNo;

    /**
     * 支付方式 如： PIXCRED_GATE等
     **/
    @NotBlank(message = "The payment method cannot be empty")
    private String wayCode = "WUDI_PAY";

    /**
     * 支付金额， 单位：分
     **/
    @NotNull(message = "The payment amount cannot be empty")
    @Min(value = 1, message = "The minimum payment amount is 1") // 支付金额最小为1
    private Long amount;

    /**
     * 货币代码
     **/
    @NotBlank(message = "Currency code cannot be empty")
    private String currency;

    /**
     * 客户端IP地址
     **/
    private String clientIp;

    /**
     * 商品标题
     **/
    @NotBlank(message = "The product title cannot be empty")
    private String subject;

    /**
     * 商品描述信息
     **/
    @NotBlank(message = "Product description information cannot be empty")
    private String body;

    /**
     * 异步通知地址
     **/
    private String notifyUrl;

    /**
     * 跳转通知地址
     **/
    private String returnUrl;

    /**
     * 订单失效时间, 单位：秒
     **/
    private Integer expiredTime;

    /**
     * 特定渠道发起额外参数
     **/
    private String channelExtra;

    /**
     * 商户扩展参数
     **/
    private String extParam;

    /**
     * 分账模式： 0-该笔订单不允许分账, 1-支付成功按配置自动完成分账, 2-商户手动分账(解冻商户金额)
     **/
    private Byte divisionMode;

    /**
     * 是否需要扩展参数
     * 0是不传url。1是传url ，选填默认0
     */
    @ApiModelProperty("是否需要扩展参数")
    private Integer needExtParam;

    /**
     * 版本号
     **/
    @NotBlank(message = "Version number cannot be empty")
    protected String version;

    /**
     * 签名类型
     **/
    @NotBlank(message = "Signature type cannot be empty")
    protected String signType;

    /**
     * 签名值
     **/
    @NotBlank(message = "Signature value cannot be empty")
    protected String sign;

    /**
     * 接口请求时间
     **/
    @NotBlank(message = "The timestamp cannot be empty")
    protected String reqTime;
}
